package com.fowo.api.sys.service;

import com.fowo.api.sys.entity.SysFile;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;

public interface FileService {
    InputStream read(SysFile sysFile);

    InputStream readDirect(String storageType, String storageKey);

    /**
     * 获取当前系统配置的主上传文件存储服务
     */
    FileStorageService getUploadStorageService();

    /**
     * 文件上传
     * @param file 文件上传字段区域
     * @param ext JSON 扩展数据, 可空
     * @return 上传后的系统文件的信息
     * @throws Exception
     */
    SysFile upload(MultipartFile file, String ext) throws Exception;

    /**
     * 文件上传（适用于平台内部直接上传生成的文件）
     * @param filename 文件名
     * @param contentType 文件 Mime 类型
     * @param inputStream 文件流
     * @param fileSize 文件大小
     * @param ext JSON 扩展数据, 可空
     * @return 上传后的系统文件的信息
     * @throws Exception
     */
    SysFile upload(String filename, String contentType, InputStream inputStream, Long fileSize, String ext) throws Exception;
}
